package com.shiyi.design.factory.factorymethod;


import com.shiyi.design.factory.factorymethod.foods.Vegetables;

/**
 * @Author qiu
 * @Date 2021/1/12 22:44
 * <p>
 * 工厂方法模式：通过定义工厂父类负责定义创建对象的公共接口，而子类则负责生成具体的对象。
 * 将类的实例化（具体产品的创建）延迟到工厂类的子类（具体工厂）中完成，即由子类来决定应该实例化（创建）哪一个类。
 * <p>
 * 优点：符合OCP原则，也符合单一职责原则，工厂模式可以说是简单工厂模式的进一步抽象和拓展，在保留了简单工厂的封装优点的同时，让扩展变得简单，让继承变得可行，增加了多态性的体现。
 * <p>
 * 缺点：这个对产品的扩展性是很高的，但是随着产品的新增，对应的类也会越来越多，编译的时间也会越来越长，给系统带来一些额外的开销。
 * 虽然保证了工厂方法内的对修改关闭，但对于使用工厂方法的类，如果要更换另外一种产品，仍然需要修改实例化的具体工厂类；
 */
public abstract class AbstractVegetablesFactory {
    public abstract Vegetables create();
}
